package com.kingyun.gpsinspection.purificationservice.facade.service.jsm.permission;

import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.Account;
import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.Employee;
import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.Roles;
import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.Ztree;

import java.util.List;

/**
 * Created by huangxueqian on 2017/1/5/005.
 */
public interface JsmRolesService {

    /**
     * 根据人员账号信息获得角色信息列表
     *
     * @param account
     * @param systemId
     * @return
     * @throws Exception
     */
    public List<Roles> getPermissionRoles(Account account, String systemId) throws Exception;

    /**
     * 查询角色全部
     *
     * @return
     * @throws Exception
     */
    public List<Roles> getAll() throws Exception;


    /**
     * @param roles 角色 新增
     * @return
     * @throws Exception
     */
    public Integer rolesAdd(Roles roles) throws Exception;

    /**
     * 角色删除
     *
     * @param roleId 角色iD
     * @return 角色删除
     * @throws Exception
     */
    public Integer rolesDel(String roleId) throws Exception;

    /**
     * @param roleId
     * @return
     * @throws Exception
     */
    public Roles rolesSelect(String roleId) throws Exception;

    /**
     * @param systemCode
     * @return 系统编码 ， 根据系统编码查询 ，该
     */
    public List<Roles> rolesListSelect(String systemCode, int roleType);

    /**
     * 批量添加
     *
     * @param list
     * @return
     */
    int insertList(List<Roles> list);

    /**
     * @param list
     * @Author 卢曼成
     * @Description 批量修改
     * @Date 2017/2/8 17:17
     */
    int updateList(List<Roles> list);

    /**
     * @param list
     * @Author 卢曼成
     * @Description 批量逻辑删除
     * @Date 2017/2/8 17:17
     */
    int deleteList(List<Roles> list);

    /**
     * @param keyword 搜索关键值
     * @param roleId 角色Id {父级角色}
     */
    public List<Roles> getChildRenRoles(String keyword, String roleId) throws Exception ;


    /**
     * @param keyword 搜索关键值
     * @param roleId 角色Id {父级角色}
     */
    public List<Ztree> getZtreeChildRenRoles(String keyword, String roleId) throws Exception ;


    /**
     * @param orgId      组织机构层级显示
     * @param isLoadOrg  是否加载组织机构
     * @param isLoadRole 是否加载角色
     */
    public List<Ztree> ajaxLoadRoles(String orgId, boolean isLoadOrg, boolean isLoadRole, Employee employee) throws Exception ;


    /**
     * 不进行ajax 调用
     * 根据当前登录人员查询当前人的组织机构 和 部门信息 查询当前下的组织机构
     * @throws Exception
     * 进行全部进行查询拼装
     */
    public List<Ztree> noAjaxLoadRoles(Employee employee, String keyword) throws  Exception ;

    /**
     * 根据人员信息，
     * 获取得到当前人员是否为超级管理员
     */
    public boolean isAdmin(Employee employee) throws Exception ;

    /**
     * 根据条件查询ID集合
     *
     * @param list
     * @return
     */
    List<String> selectByListId(List<Roles> list);

}
